package com.yuw.tools;

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

public class DateTestDriver {
    public static void main(String[] args) {
        //test01();
        test03();
    }

    /**
     * 将字符串类型的日期转换为日期对象
     *
     * @param strDate 字符串类型的日期
     * @param pattern 字符串的格式
     * @return 日期对象
     */
    private static Date convertString2Date(String strDate, String pattern) {
        // 返回值:默认值为null
        Date date = null;
        if (pattern == null) {
            // 给定一个默认的转换格式
            pattern = "yyyy-MM-dd HH:mm:ss";
        }

        // 创建个一个日期格式转换的工具类SimpleDateFormat的实例对象
        SimpleDateFormat sdf = new SimpleDateFormat(pattern);
        // 进行转换操作
        try {
            date = sdf.parse(strDate);
        } catch (Exception e) {
            // 如果发生异常，此处进行异常的日志记录
            System.out.println("日期转换发生了问题");
        }
        return date;
    }

    /**
     * 将日期对象转换为指定格式的日期字符串
     *
     * @param date 被转换的日期对象
     * @param pattern 字符串的转换格式
     * @return 指定格式的日期字符串
     */
    private static String convertDate2String(Date date, String pattern) {
        // 返回值:默认值为""
        String strDate = "";
        if (pattern == null) {
            // 给定一个默认的转换格式
            pattern = "yyyy-MM-dd HH:mm:ss";
        }

        // 创建个一个日期格式转换的工具类SimpleDateFormat的实例对象
        SimpleDateFormat sdf = new SimpleDateFormat(pattern);
        // 进行转换操作
        strDate = sdf.format(date);
        return strDate;
    }

    /**
     * 日期类应用
     */
    private static void test03() {
        Date date0 = new Date();
        Calendar calendar0 = Calendar.getInstance();
        calendar0.set(2017, 1, 14);
        // "2017-02-14" 转换为日期类型
        System.out.println(calendar0.getTime().toString());

        System.out.println("------------------------");
        String strDate = "2017-02-14 14:25:35";
        Date date1 = convertString2Date(strDate, null);
        System.out.println("转换之后的日期：" + convertDate2String(date1,"yyyy-MM-dd HH:mm:ss"));

        System.out.println("转换之后的日期：" + convertDate2String(date1,"yy年MM月dd号 HH小时mm分钟ss秒"));
        System.out.println(convertDate2String(new Date(),"今天是yyyy年中的第w周，是这一年的第D天"));
    }

    /**
     * 数学工具类
     */
    private static void test02() {
        double val0 = 3.14;
        System.out.println("ceil::" + Math.ceil(val0));
        System.out.println("floor::" + Math.floor(val0));
    }

    /**
     * 日期对象工具类
     */
    private static void test01() {
        // date类
        Date date0 = new Date();
        System.out.println("date::" + date0);
        // Calendar类
        Calendar calendar = Calendar.getInstance();
        Date date1 = calendar.getTime();
        System.out.println("Calendar::" + date1);

        System.out.println("当前是几点？答曰：" + calendar.get(Calendar.HOUR));
        // Calendar的月份是从0-11，表示一月到十二月，其他参数都是从1开始
        System.out.println("当前是几月？答曰：" + calendar.get(Calendar.MONTH));
    }
}
